﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel;
using System.Web.Mvc;

namespace WebMVC.Areas.AdminPanel.Models
{
    public class DictionaryViewModel
    {
        public List<StyleViewModel> Styles { get; set; }
        public List<IndustryViewModel> Industries { get; set; }
        public List<ColorThemeViewModel> ColorThemes { get; set; }
        public List<TagViewModel> Tags { get; set; }
        public List<PrintMediaTypeViewModel> MediaTypes { get; set; }
        public List<DesignGroupViewModel> DesignGroups { get; set; }
        public List<FontViewModel> Fonts { get; set; }
    }

    
    public class StyleViewModel
    {
        public int Id { get; set; }
        
        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }


    public class IndustryViewModel
    {
        public int Id { get; set; }

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }

    public class ColorThemeViewModel
    {
        public int Id { get; set; }

        [Required]
        [DisplayName("RGB Color")]
        [StringLength(6, MinimumLength = 6)]
        public string RGBHex { get; set; }

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }

    public class TagViewModel
    {
        public long Id { get; set; }

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }


    public class DesignGroupViewModel
    {
        public long Id { get; set; }

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }

    public class ProductTypeViewModel
    {
        [Required]
        [DisplayName("Type code")]
        [StringLength(5, MinimumLength=5)]
        public string Code { get; set; }
        

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }

    public class CardGroupViewModel
    {
        [Required]
        [DisplayName("Group code")]
        [StringLength(4, MinimumLength = 4)]
        public string Code { get; set; }


        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }
    }

    public class PrintMediaTypeViewModel
    {
        [Required]
        [DisplayName("Media code")]
        [StringLength(4, MinimumLength = 4)]
        public string Code { get; set; }

        [Required]
        [DisplayName("Name EN")]
        [StringLength(50)]
        public string NameEn { get; set; }

        [Required]
        [DisplayName("Name RU")]
        [StringLength(50)]
        public string NameRu { get; set; }

        [Required]
        [DisplayName("Name AM")]
        [StringLength(50)]
        public string NameAm { get; set; }

        [Required]
        [DisplayName("Description EN")]
        [StringLength(2000)]
        public string DescriptionEn { get; set; }

        [Required]
        [DisplayName("Description RU")]
        [StringLength(2000)]
        public string DescriptionRu { get; set; }

        [Required]
        [DisplayName("Description AM")]
        [StringLength(2000)]
        public string DescriptionAm { get; set; }

        public DateTime CreateDate { get; set; }

    }

    public class FontViewModel
    {
        public int Id { get; set; }

        [Required]
        [DisplayName("Font Family")]
        [StringLength(50)]
        public string Name { get; set; }

        [DisplayName("Is Unicode")]
        public bool IsUnicode { get; set; }

        [DisplayName("Language Code")]
        public string LanguageCode { get; set; }
        public List<SelectListItem> AllLanguages { get; set; }

        public DateTime CreateDate { get; set; }

        [DisplayName("Font Style")]
        public string Style { get; set; }
        public List<SelectListItem> AllStyles { get; set; }
        
        

    }
    
}